package com.wang.jmonkey.ca.service.impl;

import cn.hutool.core.collection.CollUtil;
import com.wang.jmonkey.ca.mapper.SystemUserMapper;
import com.wang.jmonkey.ca.service.SystemUserService;
import com.wang.jmonkey.common.model.pojo.LoginUser;
import com.wang.jmonkey.common.model.vo.PermissionVo;
import com.wang.jmonkey.common.model.vo.UserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @Description
 * @Author HeJiawang
 * @Date 2021/5/20 16:00
 */
@Service
public class SystemUserServiceImpl implements SystemUserService {

    /**
     * mapper
     */
    @Autowired
    private SystemUserMapper mapper;

    /**
     * 根据用户登陆名称获取用户登陆信息
     * @param username 用户登陆名称
     * @return 用户登陆信息
     */
    @Override
    public LoginUser selectLoginUser(String username) {
        return mapper.selectLoginUser(username);
    }

    /**
     * 根据用户登陆名称获取用户详细信息
     * @param username 用户登陆名称
     * @return 用户详细信息
     */
    @Override
    public UserVo selectUserVo(String username) {
        return mapper.selectUserVo(username);
    }

    /**
     * 获取登陆用户访问权限
     * @param userVo 登陆用户信息
     * @return 访问权限
     */
    @Override
    public Map<String, List<String>> selectPermission(UserVo userVo) {
        Map<String, List<String>> result = CollUtil.newHashMap();

        List<PermissionVo> permissionVoList = mapper.selectPermission(userVo);
        if (CollUtil.isEmpty(permissionVoList)) return result;

        permissionVoList.forEach(permissionVo -> {
            String key = permissionVo.getMethod().getDesc().toLowerCase();

            if ( result.containsKey(key) ) {
                result.get(key).add(permissionVo.getUrl());
            } else {
                result.put(key, CollUtil.newArrayList(permissionVo.getUrl()));
            }
        });

        return result;
    }
}
